function [enhenc]=my_spectral_subtraction(noisy,fs)
    %谱减法
    %用stft的前几区间噪声当做后面区间的噪声，重复， 然后做减法，最后istft还原

    s_noisy=stft(noisy,fs);
    [~,t]=size(s_noisy);
%     s_clean=spectrogram(clean);
    mag_noisy=abs(s_noisy);%幅度谱
    phase_noisy=angle(s_noisy);%相位谱
    power_noisy=mag_noisy.^2;%能量谱
    %估计噪声能量
    mag_nosie=mean(abs(s_noisy(:,1:500)),2);
    power_nosie=mag_nosie.^2;
    power_nosie=repelem(power_nosie,1,t);%认为每一傅里叶小区间都是减去同一个噪声
    
    %能量减
    power_enhenc=power_noisy-power_nosie;
    power_enhenc(power_enhenc<0)=0;
    mag_enhenc=sqrt(power_enhenc); 
    
    %恢复信号
    s_enhenc=mag_enhenc.*exp(1j*phase_noisy);
    enhenc=real(istft(s_enhenc));
    
end